// Object.assign(objTarget,...objSource); // 把多个源对象的属性合并到第一个目标对象中，并将目标对象作为结果返回
// 作用与扩展运算符非常相似
/**
 * 注意要点：
 * 1.如果源对象的属性是引用类型，仍然是浅拷贝
 * 2.返回的就是第一个对象的引用
 * 3.是采用合并的方式，所以后面对象的属性会覆盖前面对象的属性
 *   3-1：assign也可以合并数组，数组采用的是索引覆盖
 */

let objSource1 = {
    name: "Hydra",
    age: 35,
    sex: "男",
    friend: {
        name: "刘煜鑫"
    }
}

let ObjSource2 = {
    name: "奉先",
    food: "meat",
    music: "谢谢你的爱",
    sport: "足球",
}

let objTarget = {

}


// objSource1.friend.name = "宋庭一";

let objResult = Object.assign(objTarget,objSource1,ObjSource2);
// console.log("objTarget = ",objTarget);
console.log("objResult === objTarget：",objResult === objTarget)
// console.log("objTarget.frined.name ")

// 可以通过assign利用多个对象的属性快速创建新对象
let newObj = Object.assign({},objSource1,ObjSource2);
console.log("newObj = ",newObj);

let newArr = Object.assign([],[1,2,3],['a','b','c',4]);
console.log("newArr =",newArr);